
// Copyright (C) 2007 Richard Uhler
// This file is part of Esiply.
//
// Esiply is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License, Version 2,
// as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

#ifndef _FUNCTION_EXPRESSION_H_
#define _FUNCTION_EXPRESSION_H_

// function(x){ return x + 1;}

#include "Expression.h"

class FormalParameterList;
class SourceElements;
class String;

class FunctionExpression : public Expression
{
public:
    // Identifier may be NULL.
    FunctionExpression(String* identifier, FormalParameterList* params,
            SourceElements* body,int sync);

    virtual Value* evaluate(Scope* scope);
	int get_sync() const;
private:
    // Identifier is null if we don't have an identifier.
    String* m_identifier;
    FormalParameterList* m_params;
    SourceElements* m_body;
	int m_sync;
};


#endif//_FUNCTION_EXPRESSION_H_

